package com.caipos.mqtt.handler;

import com.caipos.mqtt.entity.SensorDataDO;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public abstract class BaseSensorDataHandler<T> implements SensorDataHandler<T> {
    //4G、5G协议需要自行实现数据存储
    @Override
    public final void dataStore(SensorDataDO sdd) {
        if(isCheckData()){
            checkData(sdd);//有效性检查
        }
        if(isDataTransfer()){
            dataTransfer(sdd);//数据转换
        }
        doDataStore(sdd);
    }

    //钩子函数，子类可以覆写，来选择是否开启数据转换（传感器数值合理化）,默认不开启
    private boolean isDataTransfer() {
        return false;
    }

    //钩子函数，子类可以覆写，来选择是否开启数据校验，默认不开启
    boolean isCheckData() {
        return false;
    }

    void dataTransfer(SensorDataDO sdd) {
        log.info("开启数据转换");
    }


    void checkData(SensorDataDO sdd){
        log.info("数据合理性校验");
    }
}
